package demo;

/**
 * Created with IntelliJ IDEA
 * Description:
 * User:恋恋
 * Date:2022-04-06
 * Time:23:26
 */
public class TestDemo1 {
    int a=0;
    static int b=20;
    private int c=50;
    public void methodA(){
        System.out.println("非静态的方法");
    }
    public static void methodB(){//可以得出限定修饰符和class可以一起
        System.out.println("静态方法");
    }
    static class Innerclass{
        int d=5;
        static int b=10;//在普通方法中不能定义静态成员
        static int e=20;
        public void methodC(){
            //System.out.println(a);//在静态内部类中只能访问外部类的静态成员
            //但内部类和外部类同名时，静态内部先访问哪个
            System.out.println(TestDemo1.b);//访问外部类变量
            int a=10;



            System.out.println(Innerclass.b);//访问内部类变量
           // System.out.println(TestDemo1.this.b);//不可以这样用
           // System.out.println(c);
            System.out.println("静态内部类中可以定义普通方法且可以访问静态成员");
        }
        public static void methodD(){//通过内部类访问
          //  methodA();//静态内部类中不可以访问非静态方法
            methodB();//静态内部类中可以访问静态方法

            System.out.println("静态内部类中可以定义静态方法");
        }
    }

    public static void main(String[] args) {
        //静态内部类对象的创建&&成员的访问————不依赖对象(所有不用实例化一个静态内部类，因为每一个对象都会带有同样的静态内部类）
      /* TestDemo1 TE=new TestDemo1();
       TestDemo1.Innerclass test=TE.Innerclass();*///不能这样写
        TestDemo1.Innerclass test=new TestDemo1.Innerclass();
        test.methodC();
        Innerclass.methodD();
        }
//总结：静态内部类--在类中定义静态类，可以定义普通的成员变量、成员方法和定义类变量、类方法；（在方法中不能定义静态变量,但在方法中能访问静态方法）
    //只能访问外部类的静态变量，不能访问外部类非静态方法
    //若访问外部类的静态方法---外部类类名.方法
    //当内部类与外部类的成员变量同名时，优先访问自己的
}





